Object-oriented software systems provide software architectures that organize and interconnect software objects within a computer system. Generally, software within an object-oriented system is organized into classes containing one or more software object. A software object is a self-contained software construct that includes data and methods. The software objects may use data or methods in other software objects by calling those objects to execute a method or return data. An application, such a Microsoft® Excel spreadsheet application, may have executable code organized into several classes of software objects. Generally, an application operates with several features, each having one or more components. The components and hence, the features may be formed from one or more classes or one or more objects.
When an application is installed in a computer, the computer system stores the software components of the application, onto a storage medium accessible by the computer. In addition, the installation stores metadata associated with the application to the computer. Metadata is information about the application. Generally, the metadata describes the installation of the application, objects the application calls, settings for the application, and other information. Typically, the metadata is written to a system registry in a known location. The system registry holds the metadata for at least some applications and modules that operate on the computer. In general, as the complexity and interconnectedness of the software applications increases, more and more items of metadata are stored to the registry. For example, when installing Microsoft® Office Pro 2003 suite of programs, the installation writes more than 14,000 keys of metadata to the registry.
Unfortunately, many problems occur when using the registry. For instance, when a new application is installed and the application installs a new version of a software module or component that is already stored on the computer, the metadata stored for the existing module is overwritten by the metadata for the new version of the module. Any connection between a previously existing program that requires the older version is broken and the existing program may fail to operate. Also, if the newer version of the module is removed, the metadata for the older version of the module is not restored in the registry, causing further problems.
Large programs with numerous modules, each module typically having its own metadata to write to the registry generally complicate the installation process. The conflicts between sets of like metadata must be checked, new metadata must be stored in the registry, and some metadata needs to be overwritten. Typically, a separate installer program must be developed and employed to complete the installation process. The installer program is designed to resolve the problems with the metadata storage. Unfortunately, the installer programs consist of their own sets of code that developers must write to install applications, and furthermore, using an installer slows the installation process because the installer program typically interfaces with the user rather than simply copying the code to the computer. It is with respect to these considerations and others that the present invention has been made.